package test;

import exception.ExamenFueraDeTermino;
import exception.NoSePuedeTomarExamenLibre;
import subjectAndProfessorship.EnrolledInProfessorship;
import subjectAndProfessorship.Professorship;
import util.MyDate;

/**
 * 
 * @author Damian
 * Status: Finish
 */
public class FreeFinal extends Test{

	/* ******************************* Constructor ******************************* */
	/**
	 * @param titulo
	 * @param catedra
	 * @param fecha
	 * @throws NoSePuedeTomarExamenLibre
	 * @throws ExamenFueraDeTermino
	 */
	public FreeFinal(String titulo, Professorship catedra, MyDate fecha) throws NoSePuedeTomarExamenLibre, ExamenFueraDeTermino{
		super(titulo,catedra,setTestDate(fecha,catedra));
		if (catedra.getCantFinal()<2){
			throw new NoSePuedeTomarExamenLibre("No se puede tomar mas examenes libres, supera la cantidad");
		}
	}
	
	/* ********************************* Metodos ********************************* */
	/**
	 * @param fecha
	 * @param catedra
	 * @return si la fecha que ingresa como par�metro para tomar el ex�men es anterior al inicio de cursada
	 * la retorno. Sino lanzo una excepcion.
	 * @throws ExamenFueraDeTermino 
	 */
	public static MyDate setTestDate(MyDate fecha, Professorship catedra) throws ExamenFueraDeTermino  {
		if (catedra.getFechaInicioCursada().esAnterior(fecha)){
			return fecha;
		}
		else {
			throw new ExamenFueraDeTermino("El examen libre se dere rendir antes de comenzar la cursada");
		}
	}
	
	
	public void  rendirStudyTour(EnrolledInProfessorship alumInscripto){
		this.agregarEntrega(alumInscripto);
	}
	
}
	
